﻿package com.netterminator.gwt.client.menu;

import com.smartgwt.client.widgets.tree.TreeNode;
import com.netterminator.gwt.client.PanelFactory;

/**
 * 菜单项类<P>
 * 每一个实例代表了一个菜单项
 * 
 * @author SI YULONG
 *
 */
public class ExplorerTreeNode extends TreeNode {

	
    /**
     * 菜单项构造器
     * @param name 菜单项名称
     * @param nodeID 菜单项ID
     * @param parentNodeID 菜单项父类ID
     * @param icon 菜单图标
     * @param factory 画布工厂（此项即为PanelFactory）
     * @param enabled 菜单是否可用
     * @param idSuffix 菜单ID后缀
     */
    public ExplorerTreeNode(String name, String nodeID, String parentNodeID, String icon, PanelFactory factory, boolean enabled, String idSuffix) {
        if (enabled) {
            setName(name);
        } else {
            setName("<span style='color:808080'>" + name + "</span>");
        }
        setNodeID(nodeID.replace("-", "_") + idSuffix);
        setParentNodeID(parentNodeID.replace("-", "_") + idSuffix);
        setIcon(icon);
        setFactory(factory);
        //temp hack
        if(nodeID.equals("featured-category")) {
            setIsOpen(true);
        }
    }

    /**
     * 设置该菜单项的画布工厂
     * @param factory
     */
    public void setFactory(PanelFactory factory) {
        setAttribute("factory", factory);
    }

    /**
     * 获取该菜单项的画布工厂
     * @param factory
     */
    public PanelFactory getFactory() {
        return (PanelFactory) getAttributeAsObject("factory");
    }

    /**
     * 设置菜单ID
     * @param value
     */
    public void setNodeID(String value) {
        setAttribute("nodeID", value);
    }

    /**
     * 获取菜单ID
     * @param value
     */
    public String getNodeID() {
        return getAttribute("nodeID");
    }

    /**
     * 设置菜单父类ID
     * @param value
     */
    public void setParentNodeID(String value) {
        setAttribute("parentNodeID", value);
    }

    /**
     * 获取菜单父类ID
     * @param value
     */
    public void setName(String name) {
        setAttribute("name", name);
    }

    /**
     * 设置菜单名称
     * @param value
     */
    public String getName() {
        return getAttributeAsString("name");
    }

    /**
     * 获取菜单名称
     * @param value
     */
    public void setIcon(String icon) {
        setAttribute("icon", icon);
    }

    /**
     * 获取菜单图标名称icon
     * @param value
     */
    public String getIcon() {
        return getAttributeAsString("icon");
    }

    
    /**
     * 设置菜单是否可用
     * @param isOpen
     */
    public void setIsOpen(boolean isOpen) {
        setAttribute("isOpen", isOpen);
    }

    /**
     * 设置菜单图标路径iconSrc
     * @param value
     */
    public void setIconSrc(String iconSrc) {
        setAttribute("iconSrc", iconSrc);
    }

    /**
     * 获取菜单图标路径iconSrc
     * @param value
     */
    public String getIconSrc() {
        return getAttributeAsString("iconSrc");
    }

}
